1. Field of the Invention
The present invention is generally related to interface systems that provide for the logical integration of computer peripherals into an operating system, and, in particular, to a single instantiation device driver architecture that enables the integration of multiple different, though related, peripherals or peripheral adapters into an operating system.
2. Description of the Related Art
As the computing performance of small computer systems, often referred to as personal computers, has increased, performance limiting aspects of the peripheral interface buses implemented in such systems has been identified as a significant impediment to the continuing overall performance gains that might otherwise be realized. These peripheral interface buses are typically utilized to permit custom configurations of most of the high-performance peripheral subsystems used in small computer systems. These subsystems include, most notably, video, SCSI, and network interface controllers.
As the inherent performance of the central processing units and these peripheral subsystems have increased, a number of peripheral systems buses have been proposed and adopted by the industry in general. Early buses include the industry standard architecture (ISA) and extended industry standard architecture (EISA) buses. More recent introductions have included the video local bus (VL-bus) and peripheral component interconnect (PCI) bus.
While the design of each of these buses are to some extent related, as a practical matter their differences generally require that each bus be treated differently with regard to the peripheral devices that are attached to each of the different types of buses. In general, the configuration of peripheral subsystems on each of these bus types involves establishment of I/O addresses, a dedicated memory space, and unique or shared interrupts as necessary to support integration of the peripheral subsystem into the computer system as a whole. The practical differences, however, exist in the precise manner that these parameters are established with regard to each type of bus. As the bus specific parameter are typically, if not exclusively, managed by a device driver loaded as part of the active operating system of the computer system, conventionally individual device drivers have been provided for each peripheral interface card and, therefore, for each bus type. Thus, each device driver is specifically tailored for the support of a single physical adapter operating from a singular bus type.
Conventionally, the single driver per adapter relation has been seen as an advantage, allowing for the unique one-for-one tailoring of operating system level device drivers and hardware computer peripheral adapters.
With the advent of more complex computer systems incorporating not only current but legacy bus types within a single computer system, the utilization of specifically tailored device drivers serving a single adapter of a specific bus type has become disadvantageous. The particular disadvantages include a substantial increase in the complexity of managing and associating device drivers for peripheral adapters particularly when there can be multiple legacy bus types concurrently existing within the computer system. The end user is conventionally required select and associate particular device drivers with specific peripheral adapters, even if several of the adapters preform a related function and are from a single manufacture.
Furthermore, the manufacturer of the adapters must not only prepare different device drivers for each adapter and bus type combination, but must test the set of device drivers for all combinations of device driver loading circumstances to insure mutual inter-operative compatibility. The disadvantages of increased manufacturing and support cost consequently form a significant portion of the cost of adapter products today.
Another substantial disadvantage is that excessive computer system resources may be required to support multiple adapter products particularly where they only differ in bus type. The value of a legacy adapters is often preserved by maintaining the operational presence of the adapter in a computer system in secondary support of newer, high-performance adapters operating potentially from a different bus type. The duplication of required resources, particularly of memory space allocated by each device driver for internal use in performing required device driver functions, directly impacts the memory resources remaining available for application programs executing under control of the operating system. As such, the overall functionality of the computer system may be directly impaired as a consequence of retaining the operational functionality of legacy peripheral adapters. Indeed, the same problem potentially occurs whenever multiple peripheral adapters of a common function and bus type are utilized in a single computer system. Since conventionally, device drivers form a one-to-one correspondence with peripheral adapters, the inherent result is the excessive use of main memory resources in support of multiple adapters.
Consequently, a need exists to better facilitate the use and support of multiple peripheral adapters in a personal computer system while further optimizing the ability of the operating system to support application programs and the software configuration of device drivers within the computer system by the adapter manufacturer.